/**
 * 
 */
package mm.back.filtros;

import java.io.Serializable;

import org.hibernate.Query;

/**
 * @author PUSDERKIS
 *
 */
public class ReporteVentasFiltro implements HibernateHQLFilter, Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = -2590061094346088620L;
	
	private Long idVendedor;
	private Long mesIni;
	private Long mesFin;
	private Long anoIni;
	private Long anoFin;

	/**
	 * @see mm.back.filtros.HibernateHQLFilter#getWhereClause(java.lang.String[])
	 */
	public String getWhereClause(String... alias) {
		String tabla = alias[0];
		final String PUNTO = ".";
		final String AND = " AND ";
		StringBuffer sb = new StringBuffer();
		
		if (idVendedor != null && idVendedor > 0){
			sb.append(AND).append(tabla).append(PUNTO).append("id.idVendedor = :idVendedor");
		}
		
		if (mesIni != null && mesIni > 0){
			sb.append(AND).append("month(").append(tabla).append(PUNTO).append("id.periodo) >= :mesIni");
		}
		if (anoIni != null && anoIni > 0){
			sb.append(AND).append("YEAR(").append(tabla).append(PUNTO).append("id.periodo) >= :anoIni");
		}
		if (mesFin != null && mesFin > 0){
			sb.append(AND).append("month(").append(tabla).append(PUNTO).append("id.periodo) <= :mesFin");
		}
		if (anoFin != null && anoFin > 0){
			sb.append(AND).append("YEAR(").append(tabla).append(PUNTO).append("id.periodo) <= :anoFin");
		}
			
		return sb.toString();
	}

	/**
	 * @see mm.back.filtros.HibernateHQLFilter#setWhereParameters(org.hibernate.Query)
	 */
	public void setWhereParameters(Query query) {
		
		if (idVendedor != null && idVendedor > 0){
			query.setLong("idVendedor", idVendedor);
		}
		
		if (mesIni != null && mesIni > 0){
			query.setLong("mesIni", mesIni);
		}
		if (anoIni != null && anoIni > 0){
			query.setLong("anoIni", anoIni);
		}
		if (mesFin != null && mesFin > 0){
			query.setLong("mesFin", mesFin);
		}
		if (anoFin != null && anoFin > 0){
			query.setLong("anoFin", anoFin);
		}

	}

	/**
	 * @return the idVendedor
	 */
	public Long getIdVendedor() {
		return idVendedor;
	}

	/**
	 * @param idVendedor the idVendedor to set
	 */
	public void setIdVendedor(Long idVendedor) {
		this.idVendedor = idVendedor;
	}

	/**
	 * @return the mesIni
	 */
	public Long getMesIni() {
		return mesIni;
	}

	/**
	 * @param mesIni the mesIni to set
	 */
	public void setMesIni(Long mesIni) {
		this.mesIni = mesIni;
	}

	/**
	 * @return the mesFin
	 */
	public Long getMesFin() {
		return mesFin;
	}

	/**
	 * @param mesFin the mesFin to set
	 */
	public void setMesFin(Long mesFin) {
		this.mesFin = mesFin;
	}

	/**
	 * @return the anoIni
	 */
	public Long getAnoIni() {
		return anoIni;
	}

	/**
	 * @param anoIni the anoIni to set
	 */
	public void setAnoIni(Long anoIni) {
		this.anoIni = anoIni;
	}

	/**
	 * @return the anoFin
	 */
	public Long getAnoFin() {
		return anoFin;
	}

	/**
	 * @param anoFin the anoFin to set
	 */
	public void setAnoFin(Long anoFin) {
		this.anoFin = anoFin;
	}

}
